package com.gradumate.server;

import java.util.logging.Logger;

import javax.xml.namespace.QName;

import org.apache.abdera.Abdera;

import com.gradumate.server.alfresco.TicketService;
import com.gradumate.shared.Gebruiker;

public class AlfrescoInfo {
	private final static Logger log = Logger.getLogger(AlfrescoInfo.class.getName());
	
	// plaats in MY_ALFRESCO de URL van je Alfresco Server
	public static final String MY_ALFRESO = "http://alfresco.hugozonderland.nl:8080/alfresco";

	// plaats in MY_TICKET het opgevraagd login ticket
	public static String MY_TICKET = "?alf_ticket=TICKET_5cb822677430b523f3c22cc5b1fc4b5d79a99ce8";
	// ticket kan opgevraagd worden met de URL
	// gebruik /alfresco en niet /schare
	// http://<MY_ALFRESCO/service/api/login?u=<user>&pw=<password>
	public static final String TICKET_URL = AlfrescoInfo.MY_ALFRESO + "/service/api/login";

	// de onderstaande zaken zijn nodig voor speciale verwerking
	// van de extra properties van het cmis type
	public static final String CMIS = "cmis";
	public static final String CMISRA = "cmisra";
	public static final String QNALF = "alf";
	public static final String NS_CMIS_CORE = "http://docs.oasis-open.org/ns/cmis/core/200908/";
	public static final String NS_CMIS_RESTATOM = "http://docs.oasis-open.org/ns/cmis/restatom/200908/";
	public static final String NS_ALFRESCO = "http://www.alfresco.org";
	// QName: Qualified name = xml tag-naam waarbij rekening gehouden
	// is met de namespace
	
	// Op 1 zetten wanneer geployed
	private static boolean LIVE = false;
	
	// Hostname
	public static String HOSTNAME = "http://127.0.0.1:8888/GraduMate.html?gwt.codesvr=127.0.0.1:9997&";
	
	public static Abdera abdera;
	
	/**
	 * CMIS name.
	 *
	 * @param lp the lp
	 * @return the q name
	 */
	public static QName CMISName(String lp) {
        return new QName(AlfrescoInfo.NS_CMIS_CORE, lp, AlfrescoInfo.CMIS);
    }
    
    /**
     * CMISRA name.
     *
     * @param lp the lp
     * @return the q name
     */
    public static QName CMISRAName(String lp) {
        return new QName(AlfrescoInfo.NS_CMIS_RESTATOM, lp, AlfrescoInfo.CMISRA);
    }
    
    /**
     * QName 
     * @param lp
     * @return
     */
    public static QName ALFQNName(String lp) {
        return new QName(AlfrescoInfo.NS_ALFRESCO, lp, AlfrescoInfo.QNALF );
    }

	/**
	 * Gets the abdera instance.
	 *
	 * @return the abdera instance
	 */
	public static synchronized Abdera getAbderaInstance() {
      if (abdera == null) abdera = new Abdera();
      return abdera;
    }
	
	/**
	 * Bouwt de URL op voor de sitelisting voor JSON
	 * @return String met URL
	 */ 
	public static String getSiteIndexUrl() {
		return AlfrescoInfo.MY_ALFRESO + "/service/api/sites" + AlfrescoInfo.MY_TICKET;
	}
	
	/**
	 * Ververst de admin ticket
	 */
	public static void replaceAdminTicket() {
		Gebruiker admin = new Gebruiker();
		admin.setVoornaam("admin");
		String ticket = TicketService.getAdminTicket(admin);
		
		AlfrescoInfo.MY_TICKET = "?alf_ticket=" + ticket;
	}
	
	/**
	 * Haalt de Hostname terug waar het project draait.
	 * Wanneer het project niet live is moet er een & teken worden toegevoegd voor de token in de MailCommunicator anders een ?
	 * @return String met hostname en ? of &
	 */
	public static String getHostname() {
		log.info("getHostname()");
		String s = "http://127.0.0.1:8888/GraduMate.html?gwt.codesvr=127.0.0.1:9997";
		if (LIVE) s += "?";
		else s += "&";
		return s;
	}
}
